package com.wie.service;

import com.wie.domain.dto.*;
import com.wie.domain.entity.User;
import com.baomidou.mybatisplus.extension.service.IService;
import com.wie.domain.vo.UserInfoVO;

/**
* @author WiedersehenM
* @description 针对表【user(用户表)】的数据库操作Service
* @createDate 2025-03-01 11:28:00
*/
public interface UserService extends IService<User> {

    /**
     * 发送邮箱验证码
     * @param signupDTO
     */
    void sendCode(SignupDTO signupDTO);

    /**
     * 用户注册
     * @param verifyDTO
     */
    void signup(VerifyDTO verifyDTO);

    /**
     * 使用账号密码登录
     * @param loginDTO
     * @return
     */
    User login1(LoginWithPasswordDTO loginDTO);

    /**
     * 使用邮箱登录
     * 发送验证码
     * @param loginDTO
     */
    void login2(LoginWithEmailDTO loginDTO);

    /**
     * 使用邮箱登录
     * 校验验证码
     * @param loginDTO
     */
    User login3(LoginWithEmailDTO loginDTO);

    /**
     * 删除用户
     * @param username
     */
    void delete(String username);

    /**
     * 获取当前用户信息
     * @return
     */
    UserInfoVO getUserInfo();

    /**
     * 更新用户信息
     * @param updateUserInfoDTO
     * @return
     */
    void updateUserInfo(UpdateUserInfoDTO updateUserInfoDTO);

    /**
     * 改变用户的单点登录
     */
    void updateOnly();

    /**
     * 更新用户密码
     * @param updatePassDTO
     */
    void updatePass(UpdatePassDTO updatePassDTO);
}
